package com.crawler.system.dto;

/**
 * 返回结果状态码枚举类
 */
public enum ResultCode {

    /**
     * 操作成功
     */
    SUCCESS(200, "操作成功"),

    /**
     * 操作失败
     */
    FAILED(500, "操作失败"),

    /**
     * 参数检验失败
     */
    VALIDATE_FAILED(400, "参数检验失败"),

    /**
     * 暂未登录或token已经过期
     */
    UNAUTHORIZED(401, "暂未登录或token已经过期"),

    /**
     * 没有相关权限
     */
    FORBIDDEN(403, "没有相关权限"),

    /**
     * 资源不存在
     */
    NOT_FOUND(404, "资源不存在"),

    /**
     * 系统内部错误
     */
    ERROR(500, "系统内部错误"),
    
    /**
     * 服务暂时不可用
     */
    SERVICE_UNAVAILABLE(503, "服务暂时不可用"),
    
    /**
     * 请求超时
     */
    REQUEST_TIMEOUT(408, "请求超时"),
    
    /**
     * 请求过于频繁
     */
    TOO_MANY_REQUESTS(429, "请求过于频繁"),
    
    /**
     * 任务执行中
     */
    TASK_RUNNING(601, "任务执行中"),
    
    /**
     * 任务已暂停
     */
    TASK_PAUSED(602, "任务已暂停"),
    
    /**
     * 任务已停止
     */
    TASK_STOPPED(603, "任务已停止"),
    
    /**
     * 任务执行失败
     */
    TASK_FAILED(604, "任务执行失败"),
    
    /**
     * 任务执行超时
     */
    TASK_TIMEOUT(605, "任务执行超时"),
    
    /**
     * 任务不存在
     */
    TASK_NOT_FOUND(606, "任务不存在"),
    
    /**
     * 任务状态错误
     */
    TASK_STATUS_ERROR(607, "任务状态错误");

    private final Integer code;
    private final String message;

    ResultCode(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    public Integer getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }
} 
